
package com.platform.modules.mall.entity;

import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 商品表实体
 *
 * @author
 * @date 2019-07-03 17:58:29
 */
@Data
@TableName("MALL_GOODS")
public class MallGoodsEntity implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @ApiModelProperty(value = "主键")
    @TableId
    private String id;
    /**
     * 名称
     */
    @ApiModelProperty(value = "名称")
    private String name;
    /**
     * 商品类型Id
     */
    @ApiModelProperty(value = "商品类型Id")
    private String categoryId;
    /**
     * 商品编码
     */
    @ApiModelProperty(value = "商品编码")
    private String goodsSn;
    /**
     * 品牌Id
     */
    @ApiModelProperty(value = "品牌Id")
    private String brandId;
    /**
     * 商品库存
     */
    @ApiModelProperty(value = "商品库存")
    private Integer goodsNumber;
    /**
     * 是否热销 0:否 1:是
     */
    @ApiModelProperty(value = "是否热销 0:否 1:是")
    private Integer isHot;
    /**
     * 是否上架 0:否 1:是
     */
    @ApiModelProperty(value = "是否上架 0:否 1:是")
    private Integer isOnSale;
    /**
     * 是否新商品 0:否 1:是
     */
    @ApiModelProperty(value = "是否新商品 0:否 1:是")
    private Integer isNew;
    /**
     * 是否限购 0:否 1:是
     */
    @ApiModelProperty(value = "是否限购 0:否 1:是")
    private Integer isLimited;
    /**
     * 状态 0：逻辑删除 1：正常
     */
    @ApiModelProperty(value = "状态 0：逻辑删除 1：正常")
    @TableLogic
    private Integer isDelete;
    /**
     * 列表图
     */
    @ApiModelProperty(value = "列表图")
    private String listPicUrl;
    /**
     * 关键词
     */
    @ApiModelProperty(value = "关键词")
    private String keywords;
    /**
     * 简明介绍
     */
    @ApiModelProperty(value = "简明介绍")
    private String goodsBrief;
    /**
     * 进价
     */
    @ApiModelProperty(value = "进价")
    private BigDecimal unitPrice;
    /**
     * 市场价
     */
    @ApiModelProperty(value = "市场价")
    private BigDecimal marketPrice;
    /**
     * 零售价格
     */
    @ApiModelProperty(value = "零售价格")
    private BigDecimal retailPrice;
    /**
     * 专柜价格
     */
    @ApiModelProperty(value = "专柜价格")
    private BigDecimal counterPrice;
    /**
     * 支行兑换积分
     */
    private BigDecimal branchIntegral;
    /**
     * 客户兑换积分
     */
    private BigDecimal customerIntegral;
    /**
     * 销售量
     */
    @ApiModelProperty(value = "销售量")
    private Integer sellVolume;
    /**
     * 是否是APP专属 0:否 1:是
     */
    @ApiModelProperty(value = "是否是APP专属 0:否 1:是")
    private Integer isAppExclusive;
    /**
     * APP专享价
     */
    @ApiModelProperty(value = "APP专享价")
    private BigDecimal appExclusivePrice;
    /**
     * 商品描述
     */
    @ApiModelProperty(value = "商品描述")
    private String goodsDesc;
    /**
     * 排序
     */
    @ApiModelProperty(value = "排序")
    private Integer sort;
    /**
     * 推广标签
     */
    @ApiModelProperty(value = "推广标签")
    private String promotionTag;
    /**
     * 推广描述
     */
    @ApiModelProperty(value = "推广描述")
    private String promotionDesc;
    /**
     * 销量
     */
    @ApiModelProperty(value = "销量")
    private Integer sales;
    /**
     * 版本号
     */
    @ApiModelProperty(value = "版本号")
    @Version
    private Long version;
    /**
     * 创建人ID
     */
    @ApiModelProperty(value = "创建人ID")
    private String createUserId;
    /**
     * 添加时间
     */
    @ApiModelProperty(value = "添加时间")
    private Date createTime;
    /**
     * 创建人所属部门
     */
    @ApiModelProperty(value = "创建人所属部门")
    private Long createUserDeptId;
    /**
     * 修改人ID
     */
    @ApiModelProperty(value = "修改人ID")
    private String updateUserId;
    /**
     * 修改时间
     */
    @ApiModelProperty(value = "修改时间")
    private Date updateTime;
    /**
     * 商品类型，0实物，1电子卡券
     */
    @ApiModelProperty(value = "商品类型，0实物，1电子卡券，2 无效商品，抽奖中谢谢惠顾")
    private Integer goodsType;
    /**
     * 卡券有效期
     */
    @ApiModelProperty(value = "卡券有效期")
    private Integer expireDay;
    /**
     * 卡券有效期
     */
    @ApiModelProperty(value = "卡券有效期")
    private Integer setMeal;
    /**
     * 微信优惠标识
     */
    @ApiModelProperty(value = "微信优惠标识")
    private String goodsTag;
    /**
     * 正常商品0，商户添加的商品1
     */
    @ApiModelProperty(value = "正常商品0，商户添加的商品1")
    private String type;

    /**
     * 第三方商品id(值为-1时候代表是我们自己的商品)
     */
    @ApiModelProperty(value = "第三方商品id(值为-1时候代表是我们自己的商品)")
    private String thirdGoodsId;

    /**
     *
     * 第三方系统编号值为0或者-1代表是我们自己
     */
    @ApiModelProperty(value = "第三方系统编号值为0或者-1代表是我们自己")
    private Integer thirdSysNumber;

    public enum SysNumber{
        // 联联
        LL(1001);

        private final Integer value;

        public Integer getValue(){return this.value;}

        SysNumber(Integer value){
            this.value = value;
        }
    }
    /**
     * 品牌名称
     */
    @ApiModelProperty(value = "品牌名称")
    @TableField(exist = false)
    private String brandName;
    /**
     * 分类名称
     */
    @ApiModelProperty(value = "分类名称")
    @TableField(exist = false)
    private String categoryName;
    /**
     * 店铺id
     */
    @ApiModelProperty(value = "店铺id")
    @TableField(exist = false)
    private String shopsId;
    /**
     * 轮播图
     */
    @ApiModelProperty(value = "轮播图")
    @TableField(exist = false)
    private List<MallAttachmentEntity> attachmentEntityList;
    /**
     * 商品详情页参数列表
     */
    @ApiModelProperty(value = "商品详情页参数列表")
    @TableField(exist = false)
    private List<MallGoodsAttributeEntity> goodsAttributeEntityList;
    /**
     * 商品SKU键表
     */
    @ApiModelProperty(value = "商品SKU键表")
    @TableField(exist = false)
    private List<MallSpecificationEntity> specificationEntityList;
    /**
     * 商品SKU键表
     */
    @ApiModelProperty(value = "商品SKU键表")
    @TableField(exist = false)
    private List<MallGoodsSkuEntity> goodsSkuEntityList;

    /**
     * sku规格组
     */
    @ApiModelProperty(value="sku规格组")
    @TableField(exist = false)
    private List<MallSkuGroupEntity> skuGroupEntities;

    /**
     * 分期数据
     */
    @ApiModelProperty(value="分期数据")
    @TableField(exist = false)
    private List<MallGoodsInstallmentsEntity> goodsInstallmentsList;
    /**
     * 每期手续费
     */
    @ApiModelProperty(value="每期手续费")
    @TableField(exist = false)
    private String meiqiAmount;
    /**
     * 数量
     */
    @TableField(exist = false)
    private Integer number;
    /**
     * 店铺商品id
     */
    @TableField(exist = false)
    private String shopsGoodsId;

    private String thirdLabel;

    public MallGoodsEntity() {
    }

    public enum GoodsType{
        // 实物商品
        ENTITY,
        // 卡券商品
        CARD,
        // 联联商品
        LL,
        // 卡包商品
        CARD_PACK
    }
}
